from django.db import models

from django.contrib.auth.models import AbstractUser,UserManager as _UserManager   # 导入并重命名为_ UserManager

class UserManager(_UserManager):   # 创建UserManager,不修改父类,将email字段设置为none
                                   # 此类方法要在User类方法上方
    def create_superuser(self, username, password,email=None,**extra_fields): # 重写create_superuser
        super().create_superuser(username=username,password=password,email=email,**extra_fields) # 属性重定义

class Users(AbstractUser):  # 继承AbstractUser类 ,继承其所有方法,字段
    """
    add mobile , email_active fields to Django users modules.
    添加 手机号 邮箱状态 两个字段
    """
    objects = UserManager()    # 实例
    REQUIRED_FIELDS = ['mobile']  #  创建超级用户时,需要设置[]里面的字段
    mobile = models.CharField(max_length=11,unique=True,help_text="手机号",verbose_name="手机号",
                              error_messages={
                                  'unique':"此手机号已经注册"
                              }
                              )
    email_active = models.BooleanField(default=False,verbose_name="邮箱验证状态")  # 默认没有激活

    class Meta:  #  数据库信息    内部类
        db_table = 'tb_users'   # 表名重命名,如果不写则自动创建表名为 Appname+类名
        verbose_name = '用户'   # admin站点显示中文信息   users则显示为英文
        verbose_name_plural = verbose_name       # 复数形式,命它等于一样的(上一句)

    def __str__(self):
        return self.username   # 后台打印self,username,同print